package q961_repeatedNTimes;

public class Solution_1 {
    /*
    在长度2N的数组中找出重复N次的元素
    最简单的方法就是利用哈希set 遍历的同时存储元素 发现出现过的元素就可以直接返回
    但是set的方式空间复杂度达到o(n) 因此需要寻求更简单的方法

    此题中有一个元素一定出现了N次 所以我们只需要判断连续的三个元素中是否出现了nums[i] == nums[i + 1] || nums[i] == nums[i + 2]即可
    对于总元素个数超过4的情况一定能够在循环内解决
    而对于小于等于4个的数组 那么可能出现 1 2 3 3这样的情况 所以最后要return nums[nums.length - 1];
     */
    public int repeatedNTimes(int[] nums) {

        for (int i = 0; i < nums.length - 2; i++) {
            if (nums[i] == nums[i + 1] || nums[i] == nums[i + 2]) {
                return nums[i];
            }
        }

        return nums[nums.length - 1];
    }
}
